package com.bbva.kyfb.kyfbdtofo.entitys;

import java.math.BigDecimal;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

import org.springframework.stereotype.Component;

import com.bbva.kyfb.kyfbdtofo.FicheroRequest;
import com.bbva.kyfb.kyfbdtofo.trf.DetalleTransferencia;
import com.bbva.kyfb.kyfbdtofo.trf.DetalleTraspaso;
import com.bbva.kyfb.kyfbdtofo.trf.TransferenciaOutDto;
import com.bbva.kyfb.kyfbjpatlsb.dominiotlsb.Ttltrtra;
import com.bbva.kyfb.kyfbjpatlsb.dominiotlsb.TtltrtraPK;

@Component
public class TraDTO /*extends Ttltrtra*/ {

	private static final long serialVersionUID = 1L;

	Ttltrtra tra;

	/**
	 * Metodo que genera un objecto Ttltrtra
	 * 
	 * @param object
	 * @param aFicheroRequest
	 * @param aDesTransfer
	 * @return
	 */
	public Ttltrtra buildTraEntityForTransferencia(DetalleTransferencia detalleTransferencia, FicheroRequest aFicheroRequest, String aDesTransfer) {
		

		Ttltrtra tra = new Ttltrtra();

		TtltrtraPK traPK = new TtltrtraPK(aDesTransfer);
		tra.setId(traPK);

		tra.setCodCanaldi(Short.parseShort(aFicheroRequest.getCanal()));
		tra.setCodBancoint(Short.parseShort(aFicheroRequest.getBancoInterno()));
		tra.setCodLogon20(aFicheroRequest.getReferencia());
		tra.setCodBancsb(Short.parseShort(aFicheroRequest.getBancoProducto()));
		tra.setCodProdserv(Short.parseShort(aFicheroRequest.getProducto()));
		tra.setCodSubprodu(Short.parseShort(aFicheroRequest.getSubproducto()));
		tra.setDesNombre(detalleTransferencia.getNombre());
		tra.setDesDdomic(detalleTransferencia.getDomicilio());
		tra.setDesPlaza2(detalleTransferencia.getPoblacion());

		// verificar en caso que venga a null para setear el campo a 0
		if (detalleTransferencia.getcPostal() != null
				&& !detalleTransferencia.getcPostal().isEmpty()) {
			tra.setCodCdipos2(new BigDecimal(detalleTransferencia.getcPostal()));
		} else {
			tra.setCodCdipos2(new BigDecimal(0));
		}

		Date date = Calendar.getInstance().getTime();
		// Formato yyyy-MM-dd
		tra.setFecGenerica(date);
		// Formato HH:mm:ss
		tra.setHmsGenerica(Time.valueOf(new SimpleDateFormat("HH:mm:ss")
				.format(date)));

		tra.setCodBancord(Short.parseShort(detalleTransferencia
				.getCodBancoOrdenante()));

		tra.setCodCoficord(Short.parseShort(detalleTransferencia
				.getCodOficinaOrdenante()));

		tra.setCodCconord(Short.parseShort(detalleTransferencia
				.getCodContraPartidaOrdenante()));

		tra.setCodCfoliord(new BigDecimal(detalleTransferencia
				.getCodFolioOrdenante()));

		tra.setCodBancbene(Short.parseShort(detalleTransferencia
				.getCodBancoBeneficiaria()));

		tra.setCodCofibene(Short.parseShort(detalleTransferencia
				.getCodOficinaBeneficiaria()));

		tra.setCodDigcont(new BigDecimal(detalleTransferencia
				.getCodDigitoControl()));

		if (detalleTransferencia.getCodCuenta() != null) {
			tra.setCodCcc(new BigDecimal(detalleTransferencia.getCodCuenta()));
		} else {
			tra.setCodCcc(new BigDecimal(0));

		}
		tra.setImpImporte(new BigDecimal(detalleTransferencia.getImporte()));

		// En caso de venir vacio setear "EUR"
		tra.setCodDiisoalf(detalleTransferencia.getDivisaOrdenante());

		// constantes
		tra.setDesConcept2("7");
		tra.setEstEstado(new Short("1"));
		tra.setXtiTransfer("transferencia");
		tra.setDesRechazo2(" ");
		tra.setImpTrancomi(new BigDecimal(0));
		tra.setXsnBorrado("0");

		// viene del ws
		// tra.setCodMedioacc(Short.parseShort("valor del ws."));

		return tra;
	}

	public Ttltrtra buildTraEntityForTransferencia(
			DetalleTraspaso detalleTraspaso, FicheroRequest aFicheroRequest,
			String desTransfer) {
		
		Ttltrtra tra = new Ttltrtra();		
		TtltrtraPK traPK = new TtltrtraPK(desTransfer);
		tra.setId(traPK);		
		
		tra.setCodCanaldi(Short.parseShort(aFicheroRequest.getCanal()));
		tra.setCodBancoint(Short.parseShort(aFicheroRequest.getBancoInterno()));
		tra.setCodLogon20(aFicheroRequest.getReferencia());
		tra.setCodBancsb(Short.parseShort(aFicheroRequest.getBancoProducto()));
		tra.setCodProdserv(Short.parseShort(aFicheroRequest.getProducto()));
		tra.setCodSubprodu(Short.parseShort(aFicheroRequest.getSubproducto()));		
		
		//Formato yyyy-MM-dd
		Date date = new Date();
		tra.setFecGenerica(date);
		
		//Formato HH:mm:ss		
		tra.setHmsGenerica(Time.valueOf(new SimpleDateFormat("HH:mm:ss").format(date)));
		
		//Ordenante
		tra.setCodBancord(Short.parseShort(detalleTraspaso.getCodBancoOrdenante()));		
		tra.setCodCoficord(Short.parseShort(detalleTraspaso.getCodOficinaOrdenante()));		
		tra.setCodCconord(Short.parseShort(detalleTraspaso.getCodContraPartidaOrdenante()));		
		tra.setCodCfoliord(new BigDecimal(detalleTraspaso.getCodFolioOrdenante()));		
		tra.setCodIsinord(detalleTraspaso.getCuentaOrdenante());		
		
		//Beneficiario
		tra.setCodBancbene(Short.parseShort(detalleTraspaso.getCodBancoBeneficiaria()));		
		tra.setCodCofibene(Short.parseShort(detalleTraspaso.getCodOficinaBeneficiaria()));		
		tra.setCodDigcont(new BigDecimal(detalleTraspaso.getCodDigitoControl()));		
		tra.setCodCcc(new BigDecimal(detalleTraspaso.getCodCuenta()));
		tra.setCodIsinben(detalleTraspaso.getCuentaBeneficiaria());
		
		tra.setImpImporte(new BigDecimal(detalleTraspaso.getImporte()));
		tra.setCodDiisoalf(detalleTraspaso.getMoneda());		
		
		//constantes
		tra.setDesConcept2("7");
		tra.setEstEstado(new Short("1"));
		tra.setXtiTransfer("traspaso");
		tra.setDesRechazo2("");
		tra.setImpTrancomi( new BigDecimal(0));
		tra.setXsnBorrado("0");
		tra.setDesDdomic("");
		tra.setDesPlaza2("");
		tra.setCodCdipos2(new BigDecimal(0));
		
		return tra;
	}

	public Ttltrtra buildTraUpdateEntityForTransferencia(String desTransfer,
			TransferenciaOutDto trfOutDto) {
		
		String codError = trfOutDto.getCodError();		
		Ttltrtra tra = new Ttltrtra();		
		TtltrtraPK traPK = new TtltrtraPK(desTransfer);
		tra.setId(traPK);		
		
		if("000".equals(codError)) {
			tra.setEstEstado(new Short("0"));
			tra.setDesRechazo2("OPERACIÓN DE TRANSFERENCIA REALIZADA");
		}
		else {
			tra.setDesRechazo2("TRF"+codError+":"+trfOutDto.getDescripcionError());
		}		
		tra.setImpTrancomi(trfOutDto.getImpGastoComision());		
		return tra;
	}
}
